package com.shihan.redis.springboot.demo.controller;

import com.shihan.redis.springboot.demo.entity.DeptEntity;
import com.shihan.redis.springboot.demo.mapper.DeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Description
 * @Author shihan
 * @Date 2021/1/13 23:17
 * @Version 1.0
 */
@RestController
public class RedisAnnoController {

    @Autowired
    private DeptMapper deptMapper;

    /**
     * 初步体会，注解的方式与 SpringBoot 整合！
     * cacheNames：文件夹名称（可以理解成 namespace 统一管理）
     * key：具体的 key，必须要用单引号包裹，并且最终放在双引号内
     * 对应有很多注解，当前注解的操作是：
     * 1、先从 Redis 中查对应的 key；
     * 2、如果没有，就去数据库中查询，并把查询结果放到 Redis 中；
     * 3、key 为注解中指明的信息，并且放在一个 文件夹中进行统一管理（类似于 namespace）
     * @return
     */
    @Cacheable(cacheNames = "dept", key = "'getAllDeptList'")
    @RequestMapping("/anno")
    public List<DeptEntity> getAllDeptList(){
        return deptMapper.getAllDeptList();
    }


}
